///******************************************************************************* // * Copyright (c) 2007 IBM Corporation and others. // * All rights reserved. This program and the accompanying materials // * are made available under the terms of the Eclipse Public License v1.0 // * which accompanies this distribution, and is available at // * http://www.eclipse.org/legal/epl-v10.html // * // * Contributors: // * IBM Corporation - initial API and implementation // ******************************************************************************/ // //package org.eclipse.ui.tests.keys; // //import java.util.ArrayList; //import java.util.Collection; //import java.util.Iterator; //import java.util.List; // //import org.eclipse.core.commands.ParameterizedCommand; //import org.eclipse.jface.bindings.Binding; //import org.eclipse.jface.bindings.keys.KeyBinding; //import org.eclipse.jface.bindings.keys.KeySequence; //import org.eclipse.jface.util.IPropertyChangeListener; //import org.eclipse.jface.util.PropertyChangeEvent; //import org.eclipse.ui.contexts.IContextService; //import org.eclipse.ui.internal.keys.model.BindingElement; //import org.eclipse.ui.internal.keys.model.BindingModel; //import org.eclipse.ui.internal.keys.model.CommonModel; //import org.eclipse.ui.internal.keys.model.ConflictModel; //import org.eclipse.ui.internal.keys.model.ContextElement; //import org.eclipse.ui.internal.keys.model.ContextModel; //import org.eclipse.ui.internal.keys.model.KeyController; //import org.eclipse.ui.internal.keys.model.ModelElement; //import org.eclipse.ui.internal.keys.model.SchemeElement; //import org.eclipse.ui.internal.keys.model.SchemeModel; //import org.eclipse.ui.keys.IBindingService; //import org.eclipse.ui.tests.harness.util.UITestCase; // ///** // * @since 3.4 // * // */ //public class KeysPreferenceModelTest extends UITestCase { // // private static final String ID_QUICK_SWITCH = "org.eclipse.ui.window.openEditorDropDown"; // private static final String SCHEME_EMACS_ID = "org.eclipse.ui.emacsAcceleratorConfiguration"; // private static final String ID_QUICK_ACCESS = "org.eclipse.ui.window.quickAccess"; // private static final String ID_ACTIVATE_EDITOR = "org.eclipse.ui.window.activateEditor"; // private static final String ID_ABOUT = "org.eclipse.ui.help.aboutAction"; // private static final String ID_CMD_CONFLICT1 = "org.eclipse.ui.tests.keyModel.conflict1"; // private static final String ID_CMD_CONFLICT2 = "org.eclipse.ui.tests.keyModel.conflict2"; // private static final String ID_CMD_CONFLICT3 = "org.eclipse.ui.tests.keyModel.conflict3"; // private static final String ID_CMD_CONFLICT4 = "org.eclipse.ui.tests.keyModel.conflict4"; // private static final String ID_CMD_EMACS1 = "org.eclipse.ui.tests.keyModel.emacs1"; // // /** // * @param testName // */ // public KeysPreferenceModelTest(String testName) { // super(testName); // } // // public void testDefaults() throws Exception { // KeyController controller = new KeyController(); // controller.init(getWorkbench()); // // ContextModel cm = controller.getContextModel(); // boolean foundWindow = false; // boolean foundDialog = false; // Iterator i = cm.getContexts().iterator(); // while (i.hasNext()) { // ContextElement elem = (ContextElement) i.next(); // if (elem.getId().equals(IContextService.CONTEXT_ID_WINDOW)) { // foundWindow = true; // } else if (elem.getId().equals(IContextService.CONTEXT_ID_DIALOG)) { // foundDialog = true; // } // } // assertTrue("No window context", foundWindow); // assertTrue("No dialog context", foundDialog); // assertNull(cm.getSelectedElement()); // assertNotNull(cm.getContextIdToElement().get( // IContextService.CONTEXT_ID_DIALOG_AND_WINDOW)); // // SchemeModel sm = controller.getSchemeModel(); // boolean foundDefault = false; // i = sm.getSchemes().iterator(); // while (i.hasNext()) { // SchemeElement e = (SchemeElement) i.next(); // if (e.getId().equals( // IBindingService.DEFAULT_DEFAULT_ACTIVE_SCHEME_ID)) { // foundDefault = true; // } // } // assertTrue("No default scheme", foundDefault); // assertEquals(IBindingService.DEFAULT_DEFAULT_ACTIVE_SCHEME_ID, sm // .getSelectedElement().getId()); // // ConflictModel cf = controller.getConflictModel(); // assertNull("There should not be any conflicts", cf.getConflicts()); // assertNull(cf.getSelectedElement()); // // BindingModel bm = controller.getBindingModel(); // BindingElement quickAccess = getBindingElement(bm, ID_QUICK_ACCESS); // assertNotNull(quickAccess); // assertNull(bm.getSelectedElement()); // } // // public void testContexts() throws Exception { // final KeyController controller = new KeyController(); // controller.init(getWorkbench()); // // ContextModel cm = controller.getContextModel(); // ContextElement dialog = (ContextElement) cm.getContextIdToElement() // .get(IContextService.CONTEXT_ID_DIALOG); // assertNull(cm.getSelectedElement()); // assertNotNull(dialog); // // final ArrayList events = new ArrayList(); // // test setup vars // controller.addPropertyChangeListener(new IPropertyChangeListener() { // public void propertyChange(PropertyChangeEvent event) { // events.add(event); // } // }); // cm.setSelectedElement(dialog); // // assertTrue(cm.getSelectedElement() == dialog); // // assertEquals(1, events.size()); // // ContextElement window = (ContextElement) cm.getContextIdToElement() // .get(IContextService.CONTEXT_ID_WINDOW); // assertNotNull(window); // // cm.setSelectedElement(window); // assertEquals(2, events.size()); // // cm.setSelectedElement(null); // assertEquals(3, events.size()); // // PropertyChangeEvent[] expected = new PropertyChangeEvent[] { // new PropertyChangeEvent(controller.getContextModel(), // CommonModel.PROP_SELECTED_ELEMENT, null, dialog), // new PropertyChangeEvent(controller.getContextModel(), // CommonModel.PROP_SELECTED_ELEMENT, dialog, window), // new PropertyChangeEvent(controller.getContextModel(), // CommonModel.PROP_SELECTED_ELEMENT, window, null) }; // assertChanges(expected, events); // } // // public void testBindings() throws Exception { // final KeyController controller = new KeyController(); // controller.init(getWorkbench()); // // ContextModel cm = controller.getContextModel(); // BindingModel bm = controller.getBindingModel(); // BindingElement activateEditor = getBindingElement(bm, // ID_ACTIVATE_EDITOR); // assertNotNull(activateEditor); // assertNotNull(activateEditor.getContext()); // assertNull(bm.getSelectedElement()); // // // test setup vars // final ArrayList events = new ArrayList(); // controller.addPropertyChangeListener(new IPropertyChangeListener() { // public void propertyChange(PropertyChangeEvent event) { // events.add(event); // } // }); // // bm.setSelectedElement(activateEditor); // // assertTrue(bm.getSelectedElement() == activateEditor); // assertNotNull(cm.getSelectedElement()); // assertTrue(cm.getSelectedElement().getId().equals( // activateEditor.getContext().getId())); // // PropertyChangeEvent[] expected = new PropertyChangeEvent[] { // new PropertyChangeEvent(controller.getConflictModel(), // CommonModel.PROP_SELECTED_ELEMENT, null, activateEditor), // new PropertyChangeEvent(controller.getContextModel(), // CommonModel.PROP_SELECTED_ELEMENT, null, activateEditor // .getContext()), // new PropertyChangeEvent(controller.getBindingModel(), // CommonModel.PROP_SELECTED_ELEMENT, null, activateEditor), }; // assertChanges(expected, events); // // events.clear(); // bm.setSelectedElement(null); // assertNull(bm.getSelectedElement()); // assertNull(cm.getSelectedElement()); // // expected = new PropertyChangeEvent[] { // new PropertyChangeEvent(controller.getConflictModel(), // CommonModel.PROP_SELECTED_ELEMENT, activateEditor, null), // new PropertyChangeEvent(controller.getContextModel(), // CommonModel.PROP_SELECTED_ELEMENT, activateEditor // .getContext(), null), // new PropertyChangeEvent(controller.getBindingModel(), // CommonModel.PROP_SELECTED_ELEMENT, activateEditor, null) }; // assertChanges(expected, events); // } // // public void testBasicConflicts() throws Exception { // final KeyController controller = new KeyController(); // controller.init(getWorkbench()); // // final ConflictModel cf = controller.getConflictModel(); // final BindingModel bm = controller.getBindingModel(); // final BindingElement conflict1 = getBindingElement(bm, ID_CMD_CONFLICT1); // assertNotNull(conflict1); // assertEquals(Boolean.TRUE, conflict1.getConflict()); // final BindingElement activateEditor = getBindingElement(bm, // ID_ACTIVATE_EDITOR); // assertNotNull(activateEditor); // assertEquals(Boolean.FALSE, activateEditor.getConflict()); // // // test setup vars // final ArrayList events = new ArrayList(); // controller.addPropertyChangeListener(new IPropertyChangeListener() { // public void propertyChange(PropertyChangeEvent event) { // events.add(event); // } // }); // // bm.setSelectedElement(conflict1); // assertEquals(conflict1, bm.getSelectedElement()); // assertEquals(conflict1, cf.getSelectedElement()); // // final Collection conflicts = cf.getConflicts(); // assertEquals(3, conflicts.size()); // // PropertyChangeEvent[] expected = new PropertyChangeEvent[] { // new PropertyChangeEvent(controller.getConflictModel(), // ConflictModel.PROP_CONFLICTS, null, conflicts), // new PropertyChangeEvent(controller.getConflictModel(), // CommonModel.PROP_SELECTED_ELEMENT, null, conflict1), // new PropertyChangeEvent(controller.getContextModel(), // CommonModel.PROP_SELECTED_ELEMENT, null, conflict1 // .getContext()), // new PropertyChangeEvent(controller.getBindingModel(), // CommonModel.PROP_SELECTED_ELEMENT, null, conflict1) }; // // assertChanges(expected, events); // // events.clear(); // bm.setSelectedElement(activateEditor); // assertEquals(activateEditor, bm.getSelectedElement()); // // expected = new PropertyChangeEvent[] { // new PropertyChangeEvent(controller.getConflictModel(), // ConflictModel.PROP_CONFLICTS, conflicts, null), // new PropertyChangeEvent(controller.getConflictModel(), // CommonModel.PROP_SELECTED_ELEMENT, conflict1, // activateEditor), // new PropertyChangeEvent(controller.getContextModel(), // CommonModel.PROP_SELECTED_ELEMENT, conflict1 // .getContext(), activateEditor.getContext()), // new PropertyChangeEvent(controller.getBindingModel(), // CommonModel.PROP_SELECTED_ELEMENT, conflict1, // activateEditor) }; // // assertChanges(expected, events); // } // // public void testConflictSelection() throws Exception { // final KeyController controller = new KeyController(); // controller.init(getWorkbench()); // // final ConflictModel cf = controller.getConflictModel(); // final BindingModel bm = controller.getBindingModel(); // final BindingElement conflict1 = getBindingElement(bm, ID_CMD_CONFLICT1); // final BindingElement conflict3 = getBindingElement(bm, ID_CMD_CONFLICT3); // // // test setup vars // final ArrayList events = new ArrayList(); // controller.addPropertyChangeListener(new IPropertyChangeListener() { // public void propertyChange(PropertyChangeEvent event) { // events.add(event); // } // }); // // bm.setSelectedElement(conflict1); // assertEquals(conflict1, bm.getSelectedElement()); // assertEquals(conflict1, cf.getSelectedElement()); // // assertEquals(4, events.size()); // // events.clear(); // // cf.setSelectedElement(conflict3); // assertEquals(conflict3, bm.getSelectedElement()); // assertEquals(conflict3, cf.getSelectedElement()); // // PropertyChangeEvent[] expected = new PropertyChangeEvent[] { // new PropertyChangeEvent(controller.getBindingModel(), // CommonModel.PROP_SELECTED_ELEMENT, conflict1, conflict3), // new PropertyChangeEvent(controller.getConflictModel(), // CommonModel.PROP_SELECTED_ELEMENT, conflict1, conflict3) }; // assertChanges(expected, events); // } // // public void testCreateConflict() throws Exception { // final KeyController controller = new KeyController(); // controller.init(getWorkbench()); // // final ConflictModel cf = controller.getConflictModel(); // final BindingModel bm = controller.getBindingModel(); // BindingElement about = getBindingElement(bm, ID_ABOUT); // assertNotNull(about); // assertNull(about.getTrigger()); // // BindingElement active = getBindingElement(bm, ID_ACTIVATE_EDITOR); // assertNotNull(active); // assertNotNull(active.getTrigger()); // assertEquals(Boolean.FALSE, active.getConflict()); // // bm.setSelectedElement(about); // // about.setTrigger(KeySequence.getInstance("F12")); // assertEquals(Boolean.TRUE, about.getConflict()); // assertEquals(Boolean.TRUE, active.getConflict()); // assertEquals(about, cf.getSelectedElement()); // // about.setTrigger(KeySequence.getInstance("F12 A")); // assertEquals(Boolean.FALSE, about.getConflict()); // assertEquals(Boolean.FALSE, active.getConflict()); // assertEquals(about, cf.getSelectedElement()); // assertNull(cf.getConflicts()); // // about.setTrigger(null); // assertEquals(Boolean.FALSE, about.getConflict()); // assertEquals(Boolean.FALSE, active.getConflict()); // assertEquals(about, cf.getSelectedElement()); // assertNull(cf.getConflicts()); // } // // public void testConflictRemove() throws Exception { // final KeyController controller = new KeyController(); // controller.init(getWorkbench()); // // final ConflictModel cf = controller.getConflictModel(); // final BindingModel bm = controller.getBindingModel(); // BindingElement about = getBindingElement(bm, ID_ABOUT); // assertNotNull(about); // assertNull(about.getTrigger()); // // BindingElement active = getBindingElement(bm, ID_ACTIVATE_EDITOR); // assertNotNull(active); // assertNotNull(active.getTrigger()); // assertEquals(Boolean.FALSE, active.getConflict()); // // bm.setSelectedElement(about); // // about.setTrigger(KeySequence.getInstance("F12")); // assertEquals(Boolean.TRUE, about.getConflict()); // assertEquals(Boolean.TRUE, active.getConflict()); // assertEquals(about, cf.getSelectedElement()); // // bm.remove(); // assertEquals(Boolean.FALSE, about.getConflict()); // assertEquals(Boolean.FALSE, active.getConflict()); // assertEquals(about, cf.getSelectedElement()); // assertNull(cf.getConflicts()); // } // // public void testConflictRestore() throws Exception { // final KeyController controller = new KeyController(); // controller.init(getWorkbench()); // // final ConflictModel cf = controller.getConflictModel(); // final BindingModel bm = controller.getBindingModel(); // BindingElement about = getBindingElement(bm, ID_ABOUT); // assertNotNull(about); // assertNull(about.getTrigger()); // // BindingElement active = getBindingElement(bm, ID_ACTIVATE_EDITOR); // assertNotNull(active); // assertNotNull(active.getTrigger()); // assertEquals(Boolean.FALSE, active.getConflict()); // // bm.setSelectedElement(about); // // about.setTrigger(KeySequence.getInstance("F12")); // assertEquals(Boolean.TRUE, about.getConflict()); // assertEquals(Boolean.TRUE, active.getConflict()); // assertEquals(about, cf.getSelectedElement()); // // bm.restoreBinding(controller.getContextModel()); // // active = getBindingElement(bm, ID_ACTIVATE_EDITOR); // about = getBindingElement(bm, ID_ABOUT); // // assertEquals(Boolean.FALSE, about.getConflict()); // assertEquals(Boolean.FALSE, active.getConflict()); // assertEquals(bm.getSelectedElement(), cf.getSelectedElement()); // assertNull(cf.getConflicts()); // } // // public void testUpdateContext() throws Exception { // final KeyController controller = new KeyController(); // controller.init(getWorkbench()); // // final ContextModel cm = controller.getContextModel(); // final ContextElement dialog = (ContextElement) cm // .getContextIdToElement().get(IContextService.CONTEXT_ID_DIALOG); // final ContextElement window = (ContextElement) cm // .getContextIdToElement().get(IContextService.CONTEXT_ID_WINDOW); // // final BindingModel bm = controller.getBindingModel(); // final BindingElement conflict2 = getBindingElement(bm, ID_CMD_CONFLICT2); // final Binding c2model = (Binding) conflict2.getModelObject(); // assertEquals(dialog, conflict2.getContext()); // // bm.setSelectedElement(conflict2); // assertEquals(dialog, cm.getSelectedElement()); // // // test setup vars // final ArrayList events = new ArrayList(); // controller.addPropertyChangeListener(new IPropertyChangeListener() { // public void propertyChange(PropertyChangeEvent event) { // events.add(event); // } // }); // // cm.setSelectedElement(window); // assertEquals(window, ((BindingElement) bm.getSelectedElement()) // .getContext()); // assertNotSame(c2model, conflict2.getModelObject()); // // PropertyChangeEvent[] expected = new PropertyChangeEvent[] { // new PropertyChangeEvent(conflict2, // BindingElement.PROP_CONFLICT, Boolean.TRUE, // Boolean.FALSE), // new PropertyChangeEvent(conflict2, BindingElement.PROP_CONTEXT, // dialog, window), // new PropertyChangeEvent(conflict2, // BindingElement.PROP_USER_DELTA, new Integer( // Binding.SYSTEM), new Integer(Binding.USER)), // new PropertyChangeEvent(conflict2, // ModelElement.PROP_MODEL_OBJECT, c2model, conflict2 // .getModelObject()), // new PropertyChangeEvent(cm, CommonModel.PROP_SELECTED_ELEMENT, // dialog, window), }; // assertChanges(expected, events); // } // // public void testUpdateKeySequence() throws Exception { // final KeyController controller = new KeyController(); // controller.init(getWorkbench()); // // final ContextModel cm = controller.getContextModel(); // final ContextElement dialog = (ContextElement) cm // .getContextIdToElement().get(IContextService.CONTEXT_ID_DIALOG); // // final BindingModel bm = controller.getBindingModel(); // final BindingElement conflict1 = getBindingElement(bm, ID_CMD_CONFLICT1); // final BindingElement conflict2 = getBindingElement(bm, ID_CMD_CONFLICT2); // final BindingElement conflict3 = getBindingElement(bm, ID_CMD_CONFLICT3); // final Binding c2model = (Binding) conflict2.getModelObject(); // final Binding c3model = (Binding) conflict3.getModelObject(); // final ParameterizedCommand c3parameterized = c3model // .getParameterizedCommand(); // assertEquals(dialog, conflict2.getContext()); // assertTrue(c2model instanceof KeyBinding); // bm.setSelectedElement(conflict2); // assertEquals(dialog, cm.getSelectedElement()); // // // test setup vars // final ArrayList events = new ArrayList(); // controller.addPropertyChangeListener(new IPropertyChangeListener() { // public void propertyChange(PropertyChangeEvent event) { // events.add(event); // } // }); // // KeySequence oldKeySequence = (KeySequence) conflict2.getTrigger(); // KeySequence ctrl5 = KeySequence.getInstance("CTRL+5 N"); // Object bindingConflict1 = conflict1.getModelObject(); // conflict2.setTrigger(ctrl5); // ConflictModel conflictModel = controller.getConflictModel(); // ContextModel contextModel = controller.getContextModel(); // ArrayList oldValue = new ArrayList(); // oldValue.add(conflict3); // // assertEquals(dialog, ((BindingElement) bm.getSelectedElement()) // .getContext()); // assertTrue(conflict2.getModelObject() instanceof KeyBinding); // PropertyChangeEvent[] expected = new PropertyChangeEvent[] { // new PropertyChangeEvent(conflict2, // BindingElement.PROP_CONFLICT, Boolean.TRUE, // Boolean.FALSE), // new PropertyChangeEvent(conflict2, // BindingElement.PROP_USER_DELTA, new Integer( // Binding.SYSTEM), new Integer(Binding.USER)), // new PropertyChangeEvent(controller.getConflictModel(), // ConflictModel.PROP_CONFLICTS_REMOVE, null, conflict2), // new PropertyChangeEvent(conflict2, // ModelElement.PROP_MODEL_OBJECT, c2model, conflict2 // .getModelObject()), // new PropertyChangeEvent(conflict1, // BindingElement.PROP_CONFLICT, Boolean.TRUE, // Boolean.FALSE), // new PropertyChangeEvent( // conflict1, // BindingElement.PROP_CONTEXT, // ((BindingElement) bm.getSelectedElement()).getContext(), // null), // new PropertyChangeEvent(conflictModel, // ConflictModel.PROP_CONFLICTS_REMOVE, null, conflict1), // new PropertyChangeEvent(conflict3, // BindingElement.PROP_CONFLICT, Boolean.TRUE, // Boolean.FALSE), // new PropertyChangeEvent(conflictModel, // ConflictModel.PROP_CONFLICTS, oldValue, null), // new PropertyChangeEvent(contextModel, // CommonModel.PROP_SELECTED_ELEMENT, dialog, null), // new PropertyChangeEvent(conflict1, // ModelElement.PROP_MODEL_OBJECT, bindingConflict1, // conflict1.getModelObject()), // new PropertyChangeEvent(conflict1, BindingElement.PROP_TRIGGER, // oldKeySequence, null), // new PropertyChangeEvent(conflict3, BindingElement.PROP_CONTEXT, // dialog, null), // new PropertyChangeEvent(conflict3, // ModelElement.PROP_MODEL_OBJECT, c3model, // c3parameterized), // new PropertyChangeEvent(conflict3, // BindingElement.PROP_TRIGGER, oldKeySequence, null), // new PropertyChangeEvent(bm, // BindingModel.PROP_CONFLICT_ELEMENT_MAP, null, conflict3), // new PropertyChangeEvent(conflict2, BindingElement.PROP_TRIGGER, // oldKeySequence, ctrl5), }; // assertChanges(expected, events); // } // // public void testCreateKeyBinding() throws Exception { // final KeyController controller = new KeyController(); // controller.init(getWorkbench()); // // final ContextModel cm = controller.getContextModel(); // final ContextElement window = (ContextElement) cm // .getContextIdToElement().get(IContextService.CONTEXT_ID_WINDOW); // // final BindingModel bm = controller.getBindingModel(); // final BindingElement conflict4 = getBindingElement(bm, ID_CMD_CONFLICT4); // assertNull(conflict4.getContext()); // Object c4model = conflict4.getModelObject(); // assertTrue(c4model instanceof ParameterizedCommand); // // bm.setSelectedElement(conflict4); // assertNull(cm.getSelectedElement()); // // // test setup vars // final ArrayList events = new ArrayList(); // controller.addPropertyChangeListener(new IPropertyChangeListener() { // public void propertyChange(PropertyChangeEvent event) { // events.add(event); // } // }); // // KeySequence ctrl5 = KeySequence.getInstance("CTRL+5 N"); // conflict4.setTrigger(ctrl5); // assertEquals(window, ((BindingElement) bm.getSelectedElement()) // .getContext()); // assertTrue(conflict4.getModelObject() instanceof KeyBinding); // assertEquals(cm.getSelectedElement(), conflict4.getContext()); // // PropertyChangeEvent[] expected = new PropertyChangeEvent[] { // new PropertyChangeEvent(conflict4, BindingElement.PROP_CONTEXT, // null, window), // new PropertyChangeEvent(conflict4, // BindingElement.PROP_USER_DELTA, new Integer( // Binding.SYSTEM), new Integer(Binding.USER)), // new PropertyChangeEvent(cm, CommonModel.PROP_SELECTED_ELEMENT, // null, conflict4.getContext()), // new PropertyChangeEvent(conflict4, // ModelElement.PROP_MODEL_OBJECT, c4model, conflict4 // .getModelObject()), // new PropertyChangeEvent(conflict4, BindingElement.PROP_TRIGGER, // null, ctrl5), }; // assertChanges(expected, events); // } // // public void testChangeSchemes() throws Exception { // final KeyController controller = new KeyController(); // controller.init(getWorkbench()); // // SchemeModel sm = controller.getSchemeModel(); // SchemeElement emacsScheme = null; // Iterator i = sm.getSchemes().iterator(); // while (i.hasNext()) { // SchemeElement e = (SchemeElement) i.next(); // if (e.getId().equals(SCHEME_EMACS_ID)) { // emacsScheme = e; // } // } // assertNotNull(emacsScheme); // // BindingModel bm = controller.getBindingModel(); // BindingElement quickSwitch = null; // int quickCount = 0; // i = bm.getBindings().iterator(); // while (i.hasNext()) { // BindingElement e = (BindingElement) i.next(); // if (e.getId().equals(ID_QUICK_SWITCH)) { // quickSwitch = e; // quickCount++; // } // } // assertNotNull(quickSwitch); // assertEquals(1, quickCount); // // sm.setSelectedElement(emacsScheme); // // i = bm.getBindings().iterator(); // ArrayList quick2 = new ArrayList(); // boolean foundOriginal = false; // while (i.hasNext()) { // BindingElement e = (BindingElement) i.next(); // if (e.getId().equals(ID_QUICK_SWITCH)) { // quick2.add(e); // if (e == quickSwitch) { // foundOriginal = true; // } // } // } // assertEquals(2, quick2.size()); // assertTrue(foundOriginal); // } // // public void testChangeSchemesTwice() throws Exception { // final KeyController controller = new KeyController(); // controller.init(getWorkbench()); // // SchemeModel sm = controller.getSchemeModel(); // SchemeElement emacsScheme = null; // SchemeElement defaultScheme = null; // Iterator i = sm.getSchemes().iterator(); // while (i.hasNext()) { // SchemeElement e = (SchemeElement) i.next(); // if (e.getId().equals(SCHEME_EMACS_ID)) { // emacsScheme = e; // } else if (e.getId().equals( // IBindingService.DEFAULT_DEFAULT_ACTIVE_SCHEME_ID)) { // defaultScheme = e; // } // } // assertNotNull(emacsScheme); // assertNotNull(defaultScheme); // // BindingModel bm = controller.getBindingModel(); // BindingElement quickSwitch = null; // int quickCount = 0; // i = bm.getBindings().iterator(); // while (i.hasNext()) { // BindingElement e = (BindingElement) i.next(); // if (e.getId().equals(ID_QUICK_SWITCH)) { // quickSwitch = e; // quickCount++; // } // } // assertNotNull(quickSwitch); // assertEquals(1, quickCount); // // sm.setSelectedElement(emacsScheme); // // i = bm.getBindings().iterator(); // ArrayList quick2 = new ArrayList(); // boolean foundOriginal = false; // while (i.hasNext()) { // BindingElement e = (BindingElement) i.next(); // if (e.getId().equals(ID_QUICK_SWITCH)) { // quick2.add(e); // if (e == quickSwitch) { // foundOriginal = true; // } // } // } // assertEquals(2, quick2.size()); // assertTrue(foundOriginal); // // sm.setSelectedElement(defaultScheme); // // i = bm.getBindings().iterator(); // quick2.clear(); // foundOriginal = false; // while (i.hasNext()) { // BindingElement e = (BindingElement) i.next(); // if (e.getId().equals(ID_QUICK_SWITCH)) { // quick2.add(e); // if (e == quickSwitch) { // foundOriginal = true; // } // } // } // assertEquals(1, quick2.size()); // assertTrue(foundOriginal); // } // // public void testSchemesWithNoDefaultBinding() throws Exception { // final KeyController controller = new KeyController(); // controller.init(getWorkbench()); // // final SchemeModel sm = controller.getSchemeModel(); // SchemeElement emacsScheme = null; // SchemeElement defaultScheme = null; // Iterator i = sm.getSchemes().iterator(); // while (i.hasNext()) { // SchemeElement e = (SchemeElement) i.next(); // if (e.getId().equals(SCHEME_EMACS_ID)) { // emacsScheme = e; // } else if (e.getId().equals( // IBindingService.DEFAULT_DEFAULT_ACTIVE_SCHEME_ID)) { // defaultScheme = e; // } // } // assertNotNull(emacsScheme); // assertNotNull(defaultScheme); // // final BindingModel bm = controller.getBindingModel(); // BindingElement emacsElement = getBindingElement(bm, ID_CMD_EMACS1); // assertNotNull(emacsElement); // assertTrue(emacsElement.getModelObject() instanceof ParameterizedCommand); // // sm.setSelectedElement(emacsScheme); // // emacsElement = getBindingElement(bm, ID_CMD_EMACS1); // assertTrue(emacsElement.getModelObject() instanceof KeyBinding); // // sm.setSelectedElement(defaultScheme); // // emacsElement = getBindingElement(bm, ID_CMD_EMACS1); // assertTrue(emacsElement.getModelObject() instanceof ParameterizedCommand); // } // // public void testCopyBinding() throws Exception { // final KeyController controller = new KeyController(); // controller.init(getWorkbench()); // // BindingModel bm = controller.getBindingModel(); // BindingElement activateEditor = null; // ArrayList activates = new ArrayList(); // Iterator i = bm.getBindings().iterator(); // while (i.hasNext()) { // BindingElement be = (BindingElement) i.next(); // if (be.getId().equals(ID_ACTIVATE_EDITOR)) { // activates.add(be); // if (be.getModelObject() instanceof KeyBinding) { // activateEditor = be; // } // } // } // assertEquals(1, activates.size()); // assertNotNull(activateEditor); // // bm.setSelectedElement(activateEditor); // bm.copy(); // activates.clear(); // i = bm.getBindings().iterator(); // while (i.hasNext()) { // BindingElement be = (BindingElement) i.next(); // if (be.getId().equals(ID_ACTIVATE_EDITOR)) { // activates.add(be); // } // } // assertEquals(2, activates.size()); // } // // public void testCopyCommand() throws Exception { // final KeyController controller = new KeyController(); // controller.init(getWorkbench()); // // BindingModel bm = controller.getBindingModel(); // BindingElement conflict4 = null; // ArrayList activates = new ArrayList(); // Iterator i = bm.getBindings().iterator(); // while (i.hasNext()) { // BindingElement be = (BindingElement) i.next(); // if (be.getId().equals(ID_CMD_CONFLICT4)) { // activates.add(be); // if (be.getModelObject() instanceof ParameterizedCommand) { // conflict4 = be; // } // } // } // assertEquals(1, activates.size()); // assertNotNull(conflict4); // // bm.setSelectedElement(conflict4); // bm.copy(); // activates.clear(); // i = bm.getBindings().iterator(); // while (i.hasNext()) { // BindingElement be = (BindingElement) i.next(); // if (be.getId().equals(ID_CMD_CONFLICT4)) { // activates.add(be); // } // } // assertEquals(1, activates.size()); // } // // public void testRemoveActiveEditor() throws Exception { // final KeyController controller = new KeyController(); // controller.init(getWorkbench()); // // BindingModel bm = controller.getBindingModel(); // BindingElement activateEditor = getBindingElement(bm, // ID_ACTIVATE_EDITOR); // // assertNotNull(activateEditor); // assertTrue(activateEditor.getModelObject() instanceof KeyBinding); // // bm.setSelectedElement(activateEditor); // bm.remove(); // // assertTrue(activateEditor.getModelObject() instanceof ParameterizedCommand); // } // // public void testRestoreBinding() throws Exception { // final KeyController controller = new KeyController(); // controller.init(getWorkbench()); // // BindingModel bm = controller.getBindingModel(); // BindingElement activateEditor = getBindingElement(bm, // ID_ACTIVATE_EDITOR); // // bm.setSelectedElement(activateEditor); // // KeySequence ctrl5 = KeySequence.getInstance("CTRL+5 N"); // activateEditor.setTrigger(ctrl5); // // assertEquals(new Integer(Binding.USER), activateEditor.getUserDelta()); // bm.copy(); // BindingElement activeTwo = (BindingElement) bm.getSelectedElement(); // assertFalse(activateEditor == activeTwo); // // activeTwo.setTrigger(KeySequence.getInstance("CTRL+5 M")); // assertEquals(new Integer(Binding.USER), activeTwo.getUserDelta()); // // ArrayList activates = new ArrayList(); // Iterator i = bm.getBindings().iterator(); // while (i.hasNext()) { // BindingElement be = (BindingElement) i.next(); // if (be.getId().equals(ID_ACTIVATE_EDITOR)) { // activates.add(be); // } // } // assertEquals(2, activates.size()); // // bm.restoreBinding(controller.getContextModel()); // // activates = new ArrayList(); // i = bm.getBindings().iterator(); // while (i.hasNext()) { // BindingElement be = (BindingElement) i.next(); // if (be.getId().equals(ID_ACTIVATE_EDITOR)) { // activates.add(be); // activateEditor = be; // } // } // assertEquals(1, activates.size()); // assertEquals(new Integer(Binding.SYSTEM), activateEditor.getUserDelta()); // } // // public void testRestoreCommand() throws Exception { // final KeyController controller = new KeyController(); // controller.init(getWorkbench()); // // final ContextModel cm = controller.getContextModel(); // final ContextElement window = (ContextElement) cm // .getContextIdToElement().get(IContextService.CONTEXT_ID_WINDOW); // // final BindingModel bm = controller.getBindingModel(); // BindingElement conflict4 = getBindingElement(bm, ID_CMD_CONFLICT4); // assertNull(conflict4.getContext()); // Object c4model = conflict4.getModelObject(); // assertTrue(c4model instanceof ParameterizedCommand); // // bm.setSelectedElement(conflict4); // assertNull(cm.getSelectedElement()); // // KeySequence ctrl5 = KeySequence.getInstance("CTRL+5 N"); // conflict4.setTrigger(ctrl5); // assertEquals(window, ((BindingElement) bm.getSelectedElement()) // .getContext()); // assertTrue(conflict4.getModelObject() instanceof KeyBinding); // // bm.setSelectedElement(conflict4); // bm.restoreBinding(cm); // // conflict4 = getBindingElement(bm, ID_CMD_CONFLICT4); // assertTrue(conflict4.getModelObject() instanceof ParameterizedCommand); // } // // public void testRestoreContext() throws Exception { // final KeyController controller = new KeyController(); // controller.init(getWorkbench()); // // final ContextModel cm = controller.getContextModel(); // final ContextElement dialog = (ContextElement) cm // .getContextIdToElement().get(IContextService.CONTEXT_ID_DIALOG); // // final BindingModel bm = controller.getBindingModel(); // BindingElement activateEditor = getBindingElement(bm, // ID_ACTIVATE_EDITOR); // activateEditor.setContext(dialog); // // bm.setSelectedElement(activateEditor); // bm.restoreBinding(cm); // // activateEditor = getBindingElement(bm, ID_ACTIVATE_EDITOR); // assertNotNull(activateEditor); // } // // private void assertChangeEvent(int eventNum, PropertyChangeEvent expected, // PropertyChangeEvent event) { // assertEquals("source: " + eventNum, expected.getSource(), event // .getSource()); // assertEquals("property: " + eventNum, expected.getProperty(), event // .getProperty()); // assertEquals("old: " + eventNum, expected.getOldValue(), event // .getOldValue()); // assertEquals("new: " + eventNum, expected.getNewValue(), event // .getNewValue()); // } // // private void assertChanges(PropertyChangeEvent[] expected, List events) { // assertEquals("events length", expected.length, events.size()); // for (int i = 0; i < expected.length; i++) { // assertChangeEvent(i, expected[i], (PropertyChangeEvent) events // .get(i)); // } // } // // private BindingElement getBindingElement(BindingModel bm, String bindingId) { // BindingElement quickAccess = null; // Iterator i = bm.getBindings().iterator(); // while (i.hasNext()) { // BindingElement e = (BindingElement) i.next(); // if (e.getId().equals(bindingId)) { // quickAccess = e; // } // } // return quickAccess; // } //}